package com.reliable.api.dto.jurisdiction;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 属地研判详情 DTO
 *
 * @author ruoyi
 * @date 2025-11-28
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ToString
public class ReliableJurisdictionAlertsDetailDTO {

    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 会话ID */
    private String sessionId;

    /** 交易ID，如 8293175196_tx_1 */
    private String transactionId;

    /** 提及的省份，如"河南省" */
    private String mentionedProvinces;

    /** 提及的城市，如"郑州市" */
    private String mentionedCities;

    /** 提及的区县，如"金水区" */
    private String mentionedDistricts;

    /** 精确地点，如"金水区丰产路100号丰巢柜" */
    private String exactLocationDetail;

    /** 交付方式：极兔速递、当面交付等 */
    private String deliveryMethod;

    /** 快递单号 */
    private String logisticsTrackingNo;

    /** 收件人姓名 */
    private String recipientName;

    /** 联系电话 */
    private String contactPhone;

    /** 最多3张车牌图URL数组 */
    private List<String> vehiclePlateImageUrls;

    /** 交易金额 */
    private BigDecimal transactionAmount;

    /** 交易是否成功 */
    private Boolean isTransactionSuccessful;

    /** 受害人是否主动提出金额 */
    private Boolean victimInitiatedAmount;

    /** 最多3张证据图URL数组 */
    private List<String> evidenceImageUrls;

    /** 原始消息列表 */
    private List<String> originalMessages;

    /** 处置状态：0-未接收 1-已接收 2-处置中 3-处理完毕 */
    private Integer handlingStatus;

    /** 分配给警官的 user_id */
    private Long assignedTo;

    /** 警官接收时间 */
    private Date receivedAt;

    /** 完成处置时间 */
    private Date handledAt;

    /** 最后修改人（警官ID） */
    private Long updateBy;

    /** 更新时间 */
    private Date updateTime;

    /** 属地研判摘要 */
    private String jurisdictionInsight;

    /** IP归属地详情列表 */
    private List<IpOccurrence> ipOccurrences;

    /**
     * IP归属地详情
     */
    @Data
    public static class IpOccurrence {
        /** 客户端IP地址 */
        private String ip;

        /** 该IP在本会话中首次出现时间 */
        private Date firstSeenAt;

        /** 该IP在本会话中最后出现时间 */
        private Date lastSeenAt;

        /** 该IP在本会话中的消息条数 */
        private Integer messageCount;

        /** 地理位置信息 */
        private Geo geo;
    }

    /**
     * 地理位置信息
     */
    @Data
    public static class Geo {
        /** IP归属地组合 */
        private String fullLocation;
        
        /** 城市 */
        private String city;

        /** 经度*/
        private String lng;

        /** 纬度 */
        private String lat;
    }
}